# -*- encoding: utf-8 -*-
"""

PyCharm map函数对可迭代对象进行操作
2024年10月20日10时36分
by wenyang

"""
from collections.abc import Iterator
def map_function():
    # map()函数接收两个参数，第一个参数是函数，第二个参数是可迭代对象。
    # map()函数会将函数作用于可迭代对象中的每一个元素，并返回一个新的迭代器。
    # 注意：map()函数返回的迭代器只能迭代一次。
    list_items = range(3)
    map_items = map(lambda x: x ** 2, list_items)
    print(map_items)
    print(isinstance(map_items, Iterator)) # 返回结果是一个True 说明map_items是个迭代器对象
    print(list(map_items))
    # 传递多个可迭代对象 就是会将多个可迭代对象中的元素进行一一对应的操作 使用lambda表达式通过使用不同的参数进行操作
    list_items1 = range(1, 3)
    list_items2 = range(3, 5)
    map_items = map(lambda x, y: x + y ** 2, list_items1, list_items2)
    print(list(map_items))
    names = ["wenyang", "xiaoming", "xiaohong"]
    ages = [18, 19, 20]
    gender = ["male", "female", "male"]
    info_items = map(lambda x, y, z: f"{x} is {y} years old, and is a {z}", names, ages, gender)
    for i in list(info_items):
        print(i)

def main():
    map_function()


if __name__ == "__main__":
    main()
